local M = {}

local logfile = vim.fn.stdpath "cache" .. "/nvim-error.log"

-- 创建日志目录（如果不存在）
local logdir = vim.fn.fnamemodify(logfile, ":h")
if vim.fn.isdirectory(logdir) == 0 then
    vim.fn.mkdir(logdir, "p")
end

function M.log_error(msg)
    local timestamp = os.date "%Y-%m-%d %H:%M:%S"
    local log_entry = string.format("[%s] %s\n", timestamp, msg)

    -- 安全地写入日志文件
    local file, err = io.open(logfile, "a")
    if not file then
        vim.notify("无法打开日志文件: " .. (err or "未知错误"), vim.log.levels.ERROR)
        return
    end

    file:write(log_entry)
    file:close()

    -- 同时显示通知
    vim.notify(msg, vim.log.levels.ERROR)
end

-- 设置信号处理（正确的方式）
function M.setup_signal_handling()
    local handle = vim.loop.new_signal()
    if not handle then
        M.log_error "无法创建信号处理器"
        return
    end

    handle:start("sigusr1", function()
        M.log_error "Neovim 收到 SIGUSR1 信号"
    end)

    -- 确保在退出时关闭处理器
    vim.api.nvim_create_autocmd("VimLeave", {
        callback = function()
            if handle and handle:is_active() then
                handle:stop()
                handle:close()
            end
        end,
    })
end

return M
